﻿<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=1">
    <meta name="format-detection" content="telephone=no">
    <meta charset="UTF-8">
    <title>数据响应的变化</title>
    <link rel="stylesheet" href="../css/bootstrap.css"/>
    <script src="../js/jquery-2.2.0.min.js"></script>
    <script src="../js/bootstrap.min.js"></script>
</head>
<body>
    <h1>数据响应的变化</h1><br/>

    <div id="app">
        {{name}}
        {{a.school}}
    </div>
<script src="../js/vue-2.5.16.js"></script>
<script src="../node_modules/axios/dist/axios.js"></script>
<script src="../node_modules/lodash/lodash.js"></script>

<script>
    var app = new Vue({
        el:'#app',
        //vue会循环data中的数据(数据劫持)  依次的增加getter和setter
        data:{
            name:'模版数据',//使用变量时  先要初始化，否则新加的属性不会导致页面刷新
            a:{
                school:''//最好给个初始化值如果a对象没写school属性，页面不会报错，但是不会被劫持
            },
            arr:[1,2,3,4,5]
        }
    });
    //app.$set(app.a,'school',1);//此方法可以给对象添加响应式的数据变化
    //或者替换原对象
    //app.a = {school:'替换原对象'}

    //知识点2
    //改变数组中的某一项是监控不到的,也不能改变数组长度。例如
    //app.arr[0]=100;
    //以上是错误代码

    //变异方法:  pop push shift unshift sort reserve splice
    //app.arr.reverse();//是可以使用的
    //app.arr = [2,3,4]//直接放一个新数组可以改变
</script>

</body>
</html>